Pular para o conteúdo principal

Como detectar toque em objetos 3D na cena

⚠️ para que funcione corretamente é necessário que o objeto possua algum tipo de colisão ⚠️

Em sua classe Java, faça o seguinte:

public class SuaClasse extends Component {

// cria um novo Laser
private final Laser laser = new Laser();

// cria uma nova Camera, @Singleton anexa o primeiro componente do tipo Camera que encontrar na cena
@Singleton
private Camera camera;

@Override
public void start() {

}

@Override
public void repeat() {

// verificando se o primeiro toque detectado na tela é nulo e retornando o código caso seja verdadeiro
if(Input.getTouch(0) == null) return;

// Vector2 responsável por armazenar a posição do primeiro toque detectado na tela
Vector2 posicao = Input.getTouch(0).getPosition();

// a direção do raio que será disparado da camera na posição da variável "posicao"
RayDirection direcaoDoRaio = camera.screenPointRay(posicao);

// o raio que será disparado
Ray raio = new Ray(direcaoDoRaio, 0);

// o ponto de colisão do laser
LaserHit laserHit = laser.trace(raio);

// verificando se o laserHit é diferente de nulo
if(laserHit != null) {

// mostrando o nome do objeto que o laser detectou no terminal caso a condicional seja verdadeira
Console.log("O objeto detectado foi: " + laserHit.getObject().getName());
}
}
}